package com.ks.core.dto;


import com.ks.core.base.Validator;
import lombok.Data;

import java.util.ArrayList;

/**
 * Created by WangLiCheng:nomad21st@163.com:KingDee Co. on 2020/12/20.
 * 这个模块是用户进行一些业务操作时需要提交多种信息时提交的数据结构
 * 这个数据结构主要用于一些对数据的基本状态和个别属性进行调整的情况
 */
@Data
public class OperateBase {
    private ArrayList<String> IdList;//本次动作所操作的数据的ID的清单。
    private String actionValue;//操作参数。例如在删除、审核、开关、推荐、收藏、点赞、等某些业务场景下，都需要指定一个或一批数据，然后给定一个操作值。
    private String dataId;//业务数据的Id(考虑到有些操作可能不一定会用数据的ID来作为标识，而是用Code或Name，这里设计成String)
    private String note;//操作的附加信息
    private boolean needReturnData;//我们规定操作类的接口都使用此数据结构，前端可以通过设置此值来决定是否要求后端返回所操作的数据的整个数据

    /**
     * 只要DataID有值，就是单条操作，否则就是多条操作
     * @return
     */
    public boolean isMultiple(){
        return Validator.isNullOrEmpty(this.dataId)?false:true;
    }

    @Data
    public static class OperateResultBase{
        private int Result;
    }

    /**
     * 单条操作数据操作接口的返回值结构（添加数据时也可以用这个数据结构进行返回）
     * @param <T>
     */
    @Data
    public static class OperateResultSingle<T> extends OperateResultBase{
        private T OpData;
    }

    /**
     * 批量操作数据接口的返回值结构
     * @param <T>
     */
    @Data
    public static class OperateResultMultiple<T> extends OperateResultBase{
        private ArrayList<T> OpData;
    }
}
